package com.silence.springboot.service;


import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.silence.springboot.entity.UserBaseInfoEntity;
import com.silence.springboot.vo.input.AdminAddUserBaseInfoInput;
import com.silence.springboot.vo.input.AdminUpdateUserBaseInfoInput;
import com.silence.springboot.vo.input.SearchByConditionInput;
import com.silence.springboot.vo.output.PageOutput;
import com.silence.springboot.vo.output.QueryUserBaseInfoByTokenOutput;
import com.silence.springboot.vo.output.SearchByConditionOutput;

import java.util.List;

/**
 * 用户基础信息表 服务层。
 *
 * @author mybatis-flex-helper automatic generation
 * @since 1.0
 */
public interface UserBaseInfoService extends IService<UserBaseInfoEntity> {

    /**
     * 根据token查询用户信息
     *
     * @param token token
     * @return 用户信息
     */
    QueryUserBaseInfoByTokenOutput queryUserBaseInfoByToken(String token);

    /**
     * 分页查询用户基础信息
     *
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @return 用户基础信息
     */
    Page<PageOutput> page(Integer pageNum, Integer pageSize);

    /**
     * 新增用户基础信息
     *
     * @param input 用户基础信息输入类
     */
    void adminAddUserBaseInfo(AdminAddUserBaseInfoInput input);

    /**
     * 修改用户基础信息
     *
     * @param input 用户基础信息输入类
     */
    void adminUpdateUserBaseInfo(AdminUpdateUserBaseInfoInput input);

    /**
     * 删除用户基础信息
     *
     * @param id 用户基础信息id
     */
    void deleteById(Long id);

    /**
     * 批量删除用户基础信息
     *
     * @param ids 用户基础信息id列表
     */
    void deleteBatchByIds(List<Long> ids);

    /**
     * 根据条件查询用户基础信息
     *
     * @param input 用户基础信息输入类
     * @return 用户基础信息列表
     */
    Page<SearchByConditionOutput> searchByCondition(SearchByConditionInput input);
}